/*
 * @Author: [kangjie]
 * @Date: 2022-04-28 14:06:12
 * @LastEditors: [kangjie]
 * @LastEditTime: 2022-04-28 15:19:31
 * @Description: 
 */
// 第二个参数
// map(function(){}) filter() forEach() every() some() 
// every如果有不满足条件的话直接返回false
// Array.prototype.myEvery=function(fun,obj){
//   for(i=0;i<this.length;i++){
//     if(!(obj?fun.bind(obj)(this[i]):fun(this[i]))){
//       return false
//     }
//     // if(!fun(this[i])){ //没有第二个参数的操作
//     //   return false
//     // }
//   }
//   return true
// }
// var arr=[1,2,3,4,5];
// var result=arr.myEvery(function(item,index,arr){
//   console.log(this,'打印次数');
//   return item>1
// },{name:'张三'});
// console.log(result);

// some 有一项满足直接返回true 不再继续往后判断 全部不满足返回false
// Array.prototype.mySome=function(fun,obj){
//   for(i=0;i<this.length;i++){
//     if(obj?fun.bind(obj)(this[i]):fun(this[i])){
//       return true
//     }
//   }
//   return false
// }
// var arr=[1,2,3,4,5];
// let result = arr.mySome(function(item,index,arr){
//   console.log(this,'111');
//   return item>2
// },{name:"zhangsan"});
// console.log(result);

// filter方法 返回新数组 满足条件
// Array.prototype.myFilter=function(fun,obj){
//   let result=[];
//   for(i=0;i<this.length;i++){
//     if(obj?fun.bind(obj)(this[i]):fun(this[i])){
//       result.push(this[i])
//     }
//   }
//   return result;
// }
// var arr=[1,2,3,4,5];
// let result=arr.myFilter(function(item){
//   console.log(this,'1111');
//   return item>3
// },{name:"zhangsan"});
// console.log(result);

// 重构map方法 映射 对每一项数组元素进行操作 返回的操作后的数组
Array.prototype.myMap=function(fun,obj){
  let result=[];
  for(i=0;i<this.length;i++){
    result.push(obj?fun.bind(obj)(this[i]):fun(this[i]))
  }
  return result
}
let arr=[1,2,3,4,5];
let result=arr.myMap(function(item){
  console.log(this,'11111');
  return item+1
},{name:"zhangsan"});
console.log(result);


// Vue
//   v-if和v-show区别 必考
//   vue声明周期钩子函数
//   vue双向数据绑定
//   你了解vuex?
//     // vuex5个属性 
//     // 每一个属性的作用介绍一下
//     // 项目当中如何使用vuex
//     // this.$store.state  ...mapState('',[''])
//   vueRouter
//     路由传参 区别
//     name params path query
//     // watch:{
//     //   '$route.query':{
//     //     handler(){

//     //     },
//     //     deep:true
//     //   }
//     // }
//     // beforeEach(to,form,next){

//     // }
//     watch和computed区别
//     watch用来监听数据变化 发生的是异步请求 没有缓存 页面刷新
//     computed 有缓存 
//     组件传值
//       父子 子父 
//     动态组件  
//       作用
//   JS  
    // 数据类型
    // == 和 ===区别
    // 原型和原型链
    // 作用域链
    // 深拷贝浅拷贝
    // 类型判断
    // 数组api
    // arguments this 修改this指向
    // call apply bind
    // 原型链继承 经典继承 组合继承
    // 事件冒泡 事件代理 阻止冒泡阻止默认行为
    // Ajax
  // H5api 绘制一些矩形 圆 
  //   前端存储
  // 防抖和节流
  // ES6
  //   都是考点
  // html和css
  //   标签
  //   盒模型
  //   定位属性 
  //   flex伸缩盒
  //   水平垂直居中
  //   BFC
  // 写项目
  //   pc家政 移动端 预览地址
  // Vue3 五一之后 
  // 写项目(政务一体化 做活) 微信小程序  React